package com.webdemo12.controller;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
//Controller表示此类是WEB层的控制器
@Controller
//设置Session属性
@SessionAttributes("loginUser")
public class TestController {
	//配置访问路径,一个参数的话不写默认就是value,method表示接受的请求类型,rest有7种请求类型
	@RequestMapping(value="/param1",method=RequestMethod.GET)
	//参数name是接收页面或地址栏传过来的参数,@RequestParam只是用来限定参数的名字(?username=xxx),默认就是用接收参数名
	//Map是用来存放数据(类似于request)
	public String param1(@RequestParam("username") String name, Map<String,Object> map){
		System.out.println("name:"+name);
		map.put("name", name);
		return "show";
	}
	@RequestMapping(value="/param2")
	//Model和Map一样也是用来存放数据的,推荐使用Model
	public String param2(Model model){
		//形式1:名值对
		model.addAttribute("param1", "admin");
		//形式2:key=所传参数的类型的首字母小写名(这里的key就是string),value="admin"
		model.addAttribute("admin");
		return "show";
	}
	@RequestMapping("/param3")
	//传入ServletAPI就能使用,非常方便
	public String param3(String name,HttpServletRequest request){
		System.out.println(request.getParameter("name"));
		request.setAttribute("name", name);
		return "show";
	}
	//访问路径受name的变化而变化(rest的理念)
	@RequestMapping("/{name}")
	//@PathVariable表示names是地址变量
	public String param4(@PathVariable String name,Model model){
		model.addAttribute("name",name);
		return "show";
	}
	@RequestMapping(value="/param6",method=RequestMethod.GET)
	public String param5(String name,Model model){
		//为Session中的属性设值
		model.addAttribute("loginUser",name);
		return "show";
	}
//	通过这样的配置返回的是User的json对象,但是需要其他的配置(配置	ContentNegotiatingViewResolver视图和json包)
//	@ResponseBody
//	@RequestMapping(value="/{name}",params="json")//这个params相当于@RequestParam String json
//	public User param6(@PathVariable String name, Model model){
//		User user = userService.getUser(name);
//		return user;
//	}
	@RequestMapping("/redir")
//	使用RedirectAttributes,重定向也能传参
	public String redir(RedirectAttributes ra){
		ra.addAttribute("name", "admin");
		return "redirect:/ssh/user/users";
	}
	
}
